Computer instruction sequencing and control system



1966 A. P. MULLERY ETAL 3,293,616

COMPUTER INSTRUCTION SEQUENCING AND CONTROL SYSTEM 10 Sheets-Sheet 1 Filed July :5, 1963 Smm mam M E F H 583 mw m 10.25% w L m VPF m MW M MM E565 moEmmmo v 07 Y B e 3% 852% 0? $581 58mm 205 w J a man; mfiw mm wwwma J k m; E05: E05 :75 02.2; j 295255 F H 556mm GU26 5828 22: a T a 556mm mmmmo P883 4 h E565 GU83 WI! 556mm 20 s @mfiumm, \IEFIJ wmmmu 5 556% M3 2253153 7 1966 A. P. MULLERY ETAL 3,293,615

COMPUTER INSTRUCTION SEQUENCING AND CONTROL SYSTEM Filed July 5, 1963 Sheets-Sheet 2 UNTIL 105 FIG. FIG. FIG. A A 2b 2c FIG-2 A FlG.2c 68 PERFORM IPDS UNTIL"("0R$ 69 IR CHAR-*UR m IR GRRR--0BJ REG AT P08 5 n1 PARENTHESIS CONTRUL/1O9 113 OB R AT P05 4 REG-0BJ REG RT P054 *PARENTHESIS CONTROL REG PARENTHESIS CONTROL REG-'OBJ REG AT P08 4 IFZiNIDR M IFHNIDR rm as R GG a? ?5 76 IF SATISFY IF SATISFY IF SATISFY IF"D0"0R "MAY IF"D0" FMA Y LATCH NOT ON LATCH 0N LATCH NOT ON DULATCHES 0N D0"LATCHES OFF PERFORM IPDS 88 IPDS WORD-0M REG N 1mm i F j suRJRnR-0GJ ADR OBJ REG AT P08? 78 G POS8-IR OBJ REG AT PGG 3-0R woRo ADR REG E l UBJ REG AT P05 5 ACCESS MEMORYAT REG IR WORD ADR 82 1 R1 PLACE IR IF MAY 00 LATCH MI 1 IF no LATCH 0N E i OBJ REG AT P05 5 R IR RING LOCATION RESET MAY 00 LAIGR] F ESET no LATCHTJ Dec. 20, 1966 Filed July 3, 1963 A. P. MULLERY ETAL COMPUTER INSTRUCTION SEQUENCING AND CONTROL SYSTEM 10 Sheets-Sheet :5

W ADDRESS I R NTO D E i C O D *J.= *1 E "-u A w A I FIG. 2a

7 V. v vL-- F 38 1 25 IF'CONDITIONAL IF"COND|T|0NAL i 00mm NOT SET 00" LATCH SET RESET")"LATCH PERFORM IPDS i 25 urmm'on '42 EVALUATE 27 5 J 28\ IF EVALUATE 1F EVALUATE OBJECT DONE OBJECT NOT DONE 45 30 IF EVALUATE IF EVALUATE OBJECT DONE OBJECT NOT om; PERFURM OPERATION L EVALUATE J EVALUATE OBJECT O r $OOJEOI 1H OR/ IF NOT MRI IF"('INIR 1F GENCHAR IF'[1NIR 1| mm DECODER m IR DECODER 95 m IR 0R- 0BJREG /48 53 96 AT P053 12 0R- 0BJ REG PERFORM AT PO83 OPERATION 9? SUBMDRREG as 49 19 +055 REG SUBJ ADR REG+ 1F LATCH 5 &6 OBJREOPOsOOO ON 98 1 IR CHARNBJ] ()BJ mm 50 4 2| OBJ REG 5 RESET *IPDS M SUBJADRREG 0BJREG- 0R IPDS 5* L, 22 m RESET DONE 0BJADRREG+ LATCH I {00 }/m SUBJ mm IF CALLEDHY 1F CALLED BY l BLOCK 43,5ET BLOCK 2?,SET SET'CONDITIONAL If 0R MAY DO'LATCH 'DO'LATCH D0 LiATCH MTG}; OFF f N0] DUNE l j i 1966 A. P. MULLERY ETAL 3,293,616

COMPUTER INSTRUCTION SEQUENCING AND CONTROL SYSTEM Filed July 5, 1963 10 Sheets-Sheet l LSTART FROM 1 CONSOLE REsU'wRDITmRAL 100-10R T0 DO'LATCH INDICIATE NORMAL(" REWM IP[ )?*24 IR CHAR-OBJ REG REG AT POSITION a UNTIL 0R$ 'AT posmrms V M,V L V IR woRn 4 PARENTHESIS comm 54 R0R-0RJ REG REG (cmwmonu 00 AT POSITHIN H8 mcrmm 00 LATCH, W

no LATCH & IDR 'bioajhfi; CONTROLS -0BJ REG AT POSITIONS AT POSITION 4 IR ICVHAR R0s-oerfl REG AT Pos 5 IF i IF NEITHER F(" N IR IN OR ma 1'' m OH H 6 ill- ADVANCE IR OBJ REG-J 50 7 IP05 suRIRDRREc EVALUATEY suR JEE I +031 ADR REG REFER; oR R Ah du mmcmn IN OR PERFORMED D60 1966 A. P. MULLERY ETAL 3,293,616

COMPUTER INSTRUCTION SEQUENCING AND CONTROL SYSTEM Filed July 5, 1963 10 Sheets-Sheet 9 w T 1 H 22:24 I L w: Y TLE! w: WM HQQMQH T O M q 4 k W lln W T 1 mm H MM E ii 2 20252 5E: 22: qr $5 M a: was? i Wm mm g i z al f @2223 m 2315 30 m A u v w Z2 2 E $2 20;: H M $2 so wm 1 3m x2 33 mm m mom .2 Ex SO KO m 2: 2 $1 o xo w mm Ill.

United States Patent 3,293,616 COMPUTER INSTRUCTION SEQUENCING AND CONTROL SYSTEM Alvin P. Mullery, Chappaqua, and Ralph F. Schauer, Hawthorne, N.Y., assignors to International Business Machines Corporation, New York, N.Y., a corporation of New York Filed July 3, 1963, Ser. No. 292,606 Claims. (Cl. 340172.5)

The present invention relates to a control system for use with an electronic data handling system and more particularly to such a control system which automatically analyzes and determines the proper sequence of operations to be carried out by a particular machine instruction.

In the majority of present day electronic computers, when an arithmetic or other operation is to be performed, the machine must be given specifically organized machine instructions so that it may automatically perform the computation sequentially from such instructions. In the majority of cases, providing such a detailed sequential instruction system for a computer is neither natural nor convenient. For example, in the simple algebraic expression:

said result being transferred to a given storage location, the programmer must arrange this operation so that the addition within the parentheses is carried out first, then the multiplication between the quantity B and the quantity within the parentheses is carried out next, then the addition between the quantity A and the result of the multiplication between the quantity B and the previous quantity within the parentheses is carried out and finally, the subtraction between the latter quantity and the quantity F is performed. As can readily be seen, setting forth these steps in proper machine sequence is not the result of sequentially reading through the simple algebraic expression.

It may readily be seen from the above example that a mathematical operation even as simple as this can be quite complicated and involved and a number of special rules must be continually kept in mind by the programmer. Thus, when a problem is to be performed by a computer containing perhaps several hundred such specific mathematical instructions, the ordering and performing of such operations can be extremely involved and will usually require many, many runs on the machine before it can even be established that the program or operations sequence is correct. Further, with various complicated mathematical procedures such as matrix multiplication, square rooting and certain iterative equations, repetitive processes are required until a conditional statement is satisfied whereby the programming becomes even more difiicult and cumbersome.

The method usually used in present day Computers to effect something approaching a reasonable machine langauge for use by the machine operator or programmer involves the special machine languages, as they are known, such as Fortran, Cobol, and Lisp to name just a few. Using a machine language such as Portrait, the programmer is able to use instructions which somewhat resemble a standard algebraic expression. However, there are a large number of special rules which must be remembered with such a language which complicate its use and there is a practical limit to the number of problems and the number and type of parenthetical expressions which may be conveniently solved in any one machine operation. Further, when using Fortran language, compilation and assembly of the actual machine language instruction must be performed, both of which require considerable quantities of machine time as well as requiring large sections of memory for storage of the Fortran program and the various other special compilation steps which are required before the actual machine language instruction is produced by the Fortran compiler. It may thus be seen that even using such specialized machine languages, many limitations are placed upon the programmer in terms of the tvpes of operations which can be performed and a great deal of machine time as well as special hardware are required to perform the Fortran stated programs.

It has now been found that hardware may be provided for automatically processing and sequencing machine instructions expressed in standard algebraic or mathematical language of the type illustrated in the simple algebraic example above. Briefly, in the more general sense, the system comprises means for analyzing and recognizing priority of operations and keeping track of such priority, temporarily storing certain operations in an exemplary storage location, further, is able to recognize functional groups of data such as the above-mentioned parenthetical expressions contained within parentheses or brackets of a mathematical expression and assure performance of such parenthetical groups before any other operation is performed. It further incorporates means for immediately performing all operations which can be performed as the instruction is analyzed such, for example, as a string of additions or subtractions. thus, keeping to a minimum the auxiliary storage capacity necessary. Likewise, the system embodies a looping concept wherein iterative steps of a given instruction are readily accomplished without resorting to a complex set of machine instructions on the part of the programmer or special language compiler.

It is accordingly a primary object of the present invention to provide an automatic system for properly sequencing and controlling instructions in a computer system.

It is another object to provide such a system composed of hardware, whereby such sequencing is obtained without the use of special languages and compilers.

A further object of the invention is to provide such a system capable of detecting and as igning priority to variou instructional steps encountered in an instruction.

It is yet another object to provide such a system which allows certain steps of the instruction to be performed as the instruction is scanned and does not require a complete scan before the execution of the instruction is begun.

It is another object to provide such a system which is automatically capable of performing conditional instruc tions.

It is a further object to provide such a system capable of recognizing, performing and properly sequencing instructions included in parenthetical groups.

The foregoing and other objects, features and advantages of the invention will be apparent from the following more particular description of preferred embodiments of the invention, as illustrated in the accompanying drawings.

In the drawings:

FIGURE 1 is a block diagram of a preferred embodiment of an automatic instruction sequencing and control system for an electronic computer embodying the concepts of the present invention.

FIGURE 2 is an organizational diagram of FIGURES 2a2c showing how these figures are to be arranged to form the complete flow chart.

FIGURES Za2c constitute a flow diagram or timing chart of the system shown in FIGURES l and 3 illustrating the sequential occurrence of events in such a system.

FIGURE 3 is an organizational diagram of FIGURES 3u-3f showing how these figures are to be arranged to form the complete logical diagram.

FIGURES 3n3f comprise a logical schematic diagram of the complete system necessary for use with the functional block diagram of the system set forth in FIGURE 1.

The objects of the present invention are accomplished in general by a control system for a digital computer having means for automatically interpreting and ordering an instruction sequence. The system includes means for sequentially scanning a given instruction element by element and for determining the priority of computation steps or mathematical functions which are to be performed by the system. Further, means are provided for automatically insuring that all operations within an indicated parenthetical expression are completed before it is attempted to perform an operation incorrectly with less than the complete expression. Further, means are provided for automatically repeating iterative or conditional instructions until a particular condition is satisfied.

In its broadest aspect, the system requires at least a register for storing the actual machine or system instruction in its binary or machine language form. Additionally, registers will be required for storing the subject of a system, operation or instruction, the object of said instruction or operation and the operator itself, which, of course, states the particular operation to be performed whether it be, for example, an addition, substraction, multiplication, division, etc. There must also be a special storage section or memory for temporarily storing the operands and the operators in a sequence and at a time determined from the system controls when such operations must be deferred as will be apparent from the subsequent more specific description of the invention. A memory particularly adapted for this purpose is the push-down store memory which is well known in the art. Addi tionally, various decoders will be required for examining such instructions and determining the nature of the various elements of the complete instruction.

It should be noted at this time that the specific individual functional elements making up the present machine system are quite conventional in nature. For example, such elements as registers, decoders, gate circuits, OR circuits, flip-flops, single shot multivibrators used as clocks and various other logical functional elements making up the system are well known in the electronic and specifically computer arts. The present invention is believed to reside in the over-all concept of the system and not in any of these particular functional blocks or their specific circuitry which are in themselves old. Therefore, the specific structural or circuit details of the various functional elements are not disclosed in the present application but are only described in terms of their very well known functions.

Before proceeding with a specific description of the presently disclosed embodiment of the invention, it is perhaps in order to generally discuss the problems involved in performing a particular mathematical or other problem on an electronic computer, in terms of enabling the computer to know just what operations are to be performed and in what sequence to properly solve a particular problem. Any machine instruction sequence comprises a plurality of instruction sentences. For example, in the previous algebraic expression, A+B*(C+D)F X, this machine operation may be considered to have a plurality of individual instruction sentences comprising a subject, object, and an operator or verb. The sentence A+B implies that A is the subject, the is the verb and B is the object of the verb. The expression B*(C+D) is another sentence in which B is the implied subject, the or multiplication symbol the verb, and the parenthetical expression C+D is the object. Continuing the paren thetical expression (C+D) is itself a sentence which contains C as the subject, the as the verb and D as the object and finally, the sentence [A+B*(C-E-D)lF is a sentence in which the bracketed term comprises the subject, the the verb and F the object. Similarly, the entire expression A+B*(C+D)F may be considered the subject of the transfer operation the transfer" operation itself the verb and the X the object of the transfer" function which is normally an indication of the address at which the result of the algebraic expression is to be stored in memory.

It is apparent in the above algebraic expression that certain of the verbs or operators may be performed sequentially going through the expression and others obviously may not. As the above expression is analyzed sequentially, the first addition may not be performed until the multiplication of the parenthetical expression with the quantity B and similarly, B may not be multiplied with C until the complete parenthetical expression (C+D) requiring the addition of C and D is first performed. However, once the parenthetical expression has been solved and the multiplication of B and the parenthetical expression carried out, the previous addition may be performed since the operator occurring subsequent to the parenthetical expression is a minus and of the same magnitude with respect to precedence of performance as the previous addition indication. Also, the entire arithmetic or algebraic operation previous to the transfer function must be performed before this single result may be transferred to the indicated location in memory. Once the arithmetic operation is completed, the result thereof becomes the subject of the transfer function and this result will be stored in the indicated location in memory, i.e., at X.

Restaling the above propositions in terms of what specific operations the machine must perform in order to properly evaluate the instruction sequence, it will be apparent that scanning the particular algebraic expression or operation to be performed, the machine must recognize the first operand in the string as an operand, must recognize the second character or member of the instruction as an operator, as Well as to be able to determine a precedence rating for said operator, examine the third member of the instruction to determine whether it is another operand or a special character, i.e., a left parenthesis (3 If a is encountered directly after the operator, it will be apparent that regardless of what the operator was, the first operand and this operator will have to be temporarily stored until the term within the parenthesis can be determined. If the third term happens to be another operand, the fourth term will have to be looked at to determine whether or not the first sentence may be performed. In the above example, this would be an indicated multiplication between the quantity B and the parenthetical expression. In such case, the quantity A plus the operator addition will have to be placed in a special storage location until this second condition, i.e., multiplication is fulfilled. At this point, the B becomes the subject of the new sentence being evaluated and the multiplication operator the verb and now the next operand will be accessed and since a parenthetical expression is seen, the quantity B plus its associated operator will be similarly placed in special storage until it is possible for this operation to be carried out. Now, the parenthetical expression must be evaluated and the system upon recognizing the then knows that an operand must follow such a parenthesis followed normally by a verb and since in this case,

the third member of the parenthetical expression is another operand followed by a the system performs the indicated addition At this time, the system must restore itself to its former position as though the solved parenthetical expression were just another operand and the next term of the algebraic operation checked, i.e., a subtraction to see if the previous multiplication called for may be performed. Since the multiplication has precedence over the subtraction the multiplication between the quantity B and the result of the parenthetical expression which has now been solved is performed and further, since the subtraction verb is of equal order to the addition the addition between the quantity A and the just obtained multiplication between the quantity B in the parenthetical expression is performed and this total result becomes the new subject at this point of the operation evaluation and is suitably located. The system now proceeds to evaluate the quantity F and finding it is an operand, proceeds to evaluate the next quantity and encounters the transfer function. Since such a transfer function indicates that the entire term preceding same either to the beginning of the instruction or to the left parenthesis t' of a parenthetical expression containing same is to be transferred, the system automatically is given the indication to proceed with the subtraction between the previous result and the quantity F and the result of this subtraction is again placed in a special result storage location and the member following the transfer function is evaluated. Since the value is, in effect, an operand, the system proceeds and by means for a suitable record mark supplied, determines that the end of the operation has been reached and the quantity previously stored in the special storage location is transferred to the suitable address called for by the transfer instruction.

From the above general discussion it may be seen that the system, in order to be able to properly evaluate such an instruction, must include a decoding means for recognizing the various portions of the system instruction and storage means for storing those operands and operators which cannot be immediately used or performed due to the nature or arrangement of the instruction. The storage means must have control means associated therewith for storing the various portions of the instruction in the particular sequence and for reading them back out in reverse order. Means are also required for temporarily storing the results of the various operations performed by the system and for determining the priority of the various mathematical operators and special symbols such as the parenthesis, transfer functions, compare" functions and the like which are normally encountered in such machine instructions.

A description of the particular type or form of the machine language utilized by the system of the present embodiment of the invention will now be presented. in the above example, it was merely stated that the quantities A, B, C, D, and F were numbers or represented arithmetic or numerical quantities and that the member X was an address. It should be noted that in such machine instructions, the actual numbers, A, B, C, D, and F would be absolute addresses in the Main Memory of the particular quantities or numbers which are to be operated on and that the instruction or the Decoder would recognize these addresses as general characters. Included are the various arithmetic operation indicators, such as the addition subtraction multiplication division U), transfer function compare function and the actual markers for the parenthetical expression, i.e., a left parenthesis and a right parenthesis Further, a special mark is placed with such instructions at the beginning and end of the instruction sequence, this mark or record mark as it is conventionally referred to is shown in the subsequent examples as follows:

In the present system and for purposes of describing the present embodiment of the invention, it will be assumed that all of the data is organized in the memory in words of eight, 8 bit characters. Thus, for a typical machine instruction included in the above example, the record marks. the operators, i.e., -l-, t, 1," etc, are eight bit binary coded characters taking up one character position in the machine instruction. The address or the quantities or numbers appearing in the instructions require two character positions. This is because the standard word address in a conventional 128 x 128 word organized memory as is utilized in the system to be subsequently described requires that a total of fourteen bits be used to give a complete word address. Of these fourteen bits, seven will be the X address and seven will be the Y address as is well known in the computer arts. Fo this reason, in the subsequent specific examples the actual quantities or numbers which are being operated on in the particular system instruction are shown as double letters, i.e. AA, BB, CC, etc, thus indicating that each address for such a quantity takes up two character positions in a machine word and, thus, in storage.

As will be apparent from the above description of the requirements for a system capable of automatically sequencing an arithmetic or algebraic machine instruction, certain rules of language and mathematics must. of course, be followed. For example, when a segment or member of the mathematical expression is to be operated upon as a whole, i.e., is to be a divisor dividend, multiplicand, etc.. this portion of the instruction must be surrounded by parentheses to indicate that it is a parenthetical expression which is to be treated as a single quantity once the indicated operations within the parentheses have been performed. Also, after the standard mathematical operations, i.c., l-, or there must be an operand on either side whether it be an actual quantity shown in a general character address notation or some sort of a parenthetical expression. In other words, it would not be proper to put an addition and a multiplication operator in contiguous locations as they would obviously be meaninglcss either in actuality or to the system.

A further very important concept of the present invention is that it allows the automatic sequencing of iterative or recursive operations which require that a particular mathematical operation be repeated until a particular condition is fulfilled. A specific example of such an iterative function is shown in the first example which follows subsequently in the specification, but briefly, it involves performing an operation upon a variable quantity in accordance with a particular formula or instruction and changing the variable by an indicated amount or in an indicated manner in accordance with the instruction and after each operation, comparing the result with a desired result and repeating the instruction until a comparison is achieved. This latter routine is provided for by the utilization of a special until symbol which is inserted in the system instruction together with a statement of the condition to be fulfilled. Since it is apparent that such an iterative expression may form only a small section of a complete machine instruction, the system must be provided with means for returning only to the point desired by the iterative portion of the instruction and proceeds through that portion only until the condition is satisfied.

The present system has a portion of its control circuitry arranged to perform just this operation in that as an instruction is being performed, a particular parenthetical expression which may be the subject of an until instruction is carried out or performed in the usual manner at which time the until instruction is noted. However, means are provided for automatically storing an indication in a special memory location of where any parenthetical operation begins in the instruction sequence so that in the event that an until symbol is detected subsequent to the parenthetical expression, the product of this parenthetical expression may be automatically compared with a specified condition and if it does not meet same, the stored indication of the address of the desired parenthetical expression may be recalled and the operation will be repeated until the condition is satisfied. It is also possible that the entire previous instruction is the subject of the until in which the beginning record mark (a is alternatively the beginning point for the repeated operation. Suitable control circuitry is provided in the present embodiment for first looking for a left parenthesis and if none was present, returning to the beginning of the instruction sequence.

As stated in the above general description of the requirements for such a system, in the normal course of events when a parenthetical expression is solved and an operator is detected subsequent thereto such as a multipli cation, addition, subtraction or division, there would be no need to save the entry point into the parenthetical expression and it would be merely erased from the Instruction or other Storage Register when the operation was completed. However, in the case of the detection of an "until" function, it is necessary to keep the location of the previous parenthetical expresion until the requisite comparison between the result of the previous parenthetical expression and the requirements of the until function are completed. Therefore, it is required of the system that the left parenthesis and its relative location in the instruction sequence and also the record mark and its location be maintained in memory until it is at least determined that a conditional or until instruction does not follow the parenthetical expression or in the case of the beginning record mark occur anywhere else in the instruction sequence. It should be noted that it is also required by the present system that the actual subject or iterative function to be performed in a conditional statement be properly surrounded by parentheses, if not, the entire previous instruction sequence, and similarly, that the object or the condition to be satisfied be so surrounded in order for the system to properly evaluate the function and repeat the iterative operations until the required condition is, in fact, satisfied,

The actual mathematical computations provided for in the present exemplary embodiment as stated previously are addition (l), Subtraction multiplication and division Since the majority of actual operations in the machine arithmetic unit or Central Process Unit, (C.P.U.), are actually various combinations of the above four mathematical operations, these operations have been chosen as the ones to be specifically analyzed in the present embodiment and the sequence for a proper machine solution of such a problem explained in detail. Any other operator could be included in a similar manner. As stated previously, the multiplication and the division operation are of equal importance with respect to sequencing or precedence in the machine so that if a string of multiplication and divisions were encountered, each individual multiplication or division could be performed immediately without waiting for a preferential sequence to be performed. Thus in an instruction string, for example, A*B/C*D*E, the A could be multiplied by the B before B was divided by C, or conversely, B could be divided by C before C was multiplied by D, etc. Similarly, strings of additions or subtraction may be performed sequentially without taking into account precedence of operations, that is, A+B-C+D may be performed in the specified serial sequence without effecting the accuracy of the result. Obviously, multiplications and divisions must be performed before additions or subtractions if the proper results are to be obtained.

The special symbols other than the arithmetic or mathematical functions which are provided for in the present embodiment are the right and left parentheses the record mark (i), the transfer function and the compare or equal function. By using these symbols, it is believed that virtually any arithmetic operation normally performed in a computer may be properly stated and performed utilizing the automatic instruction sequencing system of the present system. Referring again to the relative precedence given to the arithmetic operators as well as to the special operators or functions, it will be apparent from the above description and also from the description of FIGURES 2 and 3 that the until symbol, the left parenthesis symbol, the record mark symbol, the right parenthesis symbol and the transfer symbol are separately detected by the system and utilized to start certain system sequences as will be specifically described subsequently. Of these symbols, only the transfer and the "compare are actually sent as instructions to the Central Processing Unit of the computer which performs the particular required arithmetic operation.

The compare" operator symbol is given the same order of precedence as a multiplication or division (NJ in that it takes precedence over an addition or subtraction and also over a transfer function However, this may be somewhat misleading as a compare function is usually utilized in a conventional or iterative operation and has a simple subject and object and it is, therefore, not normally necessary to take into account the precedence of this function over some other function.

The transfer function as stated previously, indicates that its subject or a particular quantity is to be transferred to some address in memory as specified by the instruction. It is, of course, obvious that whatever preceded the transfer function in the nature of operands and operators must necessarily be completely performed before the proper transfer can take place. In the case of the present system, whenever a transfer function is encountered it will indicate that all operations which may be in the temporary storage locations must be performed all the way back to either the beginning of the parenthetical statement in which it is contained or a record mark (s which latter indicates the beginning of the actual instruction sequence. Thus, if the transfer operator is located within a parenthetical expression, it is apparent as in the subsequent example, that the operation is to be carried out and the result transferred to the desired address and the particular result in this address is to be treated as a quantity to be used in the performance of subsequent steps in the indicated instruction. It is thus obvious that when a transfer" function is located within a parenthetical expression, that only that portion of the instruction within the parenthetical expression to the left of the transfer" function is to be considered the subject of said transfer function.

As stated previously in the specification, the present Instruction Sequencing and Control System is intended to be used with a standard computer system having the usual large Memory Section and a Central Processing Unit which is capable of automatically performing the requisite mathematical or arithmetic computations. The Memory System as intended by the present embodiment is a standard three dimensional word organized memory having fixed field length words wherein absolute address into Main Memory is supplied to the proper addressing circuitry therefor and will result in the read out of a given word at the appropriate storage location into suitable Buffer Register means which word or segment of data may be utilized in the Central Process Unit for mathematical computation or however may be desired. Such memories are extremely well known in the computer art and it is assumed for the purposes of the present specification that the memory will automatically provide a piece of data when given the proper address or alternatively, will store a given piece of data in a specified address location upon suitable read" or write instruction to said memory.

The Central Process Unit referred to in the present specification is a completely straightforward and standard unit capable of performing the basic arithmetic operations of addition, subtraction, multiplication and di vision, etc. The C.P.U. must be provided with the operands, i.e., subject and object, as well as an indication of the operation to be performed. The operands are sent to the Central Process Unit (C.P.U.) in terms of their fourteen bit binary addresses as indicated previously and C.P.U. automatically accesses the operands at their respective storage locations, brings them into the various registers within the C.P.U. and performs the indicated operations. Subsequent to the performance of the indicated operations, the C.P.U. automatically stores the result in an accumulator which may be a portion of the Main Memory and the address of this result is again returned to the Instruction Control Unit for use therein as will be more fully set forth subsequently. Together with the result address, a signal is conventionally stipplied indicating that the particular aritlunetic operation has been carried out.

The following list of references is a rather complete list of standard engineering texts which fully describe the structure and operations of conventional computer memories of the type set forth above and further dis close the structural details and method of operation of the arithmetic units or C.P.U.s of standard computers. Additionally, disclosed therein are specific circuit embodiments and explanations of the various individual logical functional components set forth in the logical schematic diagram of FIGURES 30-31. Since as stated previously, no invention is claimed in any of these individual functional blocks, the Central Process Unit itself or in the Main Memory, the specific details of construction and operation are obviously not suitable for inclusion in the present specification.

Arithmetic Operations in Digital Computers, by R. K. Richards, also Digital Computer Components and Circuits," by R. K. Richards (D. Van Nostrand Co, 1957), in the chapter Magnetic Core Storage; the article, Computer Memories: A Survey of the State of the Art, by A. Rajchman, page 104 of Proceedings of the IRE, January 1961, vol. 49, No. l; the article A 32,000-Word lvlagnctic-Core Memory, by Ross and Partridge, page 102 in the IBM Journal of Research and Development, vol. l, No. 2. April 1957: the IBM 704 and 705 Customer Engineering Reference Manual; and the IBM Customer Engineering Manual for the 7302 Core Storage Unit.

Having generally described the problems involved in sequencing an arithmetic instruction to a computer as well as having specified the general manner of solution of such problems by the present system, a general description of the more basic components necessary in such a system to achieve such sequencing will follow with reference to the general block diagram of FIGURE 1.

It should be understood that FIGURE 1 is intended only to give a broad understanding of the more significant portions of the system insofar as the functions which they perform are concerned. Very briefly, this figure shows those components of the system which function to evaluate an instruction, perform immediately such instructions as may be immediately performed in accordance with standard mathematical rules. store temporarily such functions as cannot be immediately performed, perform other subsequent functions which can be performed before the functions which have been stored and re-access and perform in a proper sequential order those portions of the instruction which have been temporarily stored.

By evaluating and giving certain weighted precedence to various ones of the operation instructions included in the overall instruction set and also the special instructions described previously such as the record marks, transfer functions until functions, compare functions etc. The logical circuitry of the system is automatically able to determine the proper sequence for the performance of the various operations of any instructions. The Instruction Register, IR, in the upper left hand corner of the figure is used for storage and sequential examination of the entire instruction sequence arranged in the pattern set forth above and using the particular special symbols mentioned. The Instruction Decoder examines the contents of the Instruction Register a character at a time and determines the nature of the particular character at a particular location in the instruction sequence. The output of this Instruction Decoder performs the key function of telling the sequencing controls what sort of a character is present at a particular location in the Decoder and provides for the setting of the various precedence controls insofar as the instruction words or operators are concerned and also indicates the occurrence of the special symbols such as the parentheses, record marks, transfer" functions, until functions or the existence of the general character address. The output of this Decoder is a plurality of lines which are fed into the Instruction Sequencing and Timing Unit which is, of course, the heart of the present system and actually controls the gating of the various instruction characters into and out of the Storage Registers as well as gating them in the proper sequence to the C.P.U. when such operation is in order.

The Subject and Object Registers are storage registers capable of storing eight character, eight bit per character, words and are used in a manner to be described subsequently with reference to the specific description of r a number of operating examples and the logical control circuitry referring to both FIGURES 2 and 3. These registers are used specifically both for the temporary storage and construction of words to be subsequently either utilized in the making computations in the C.P.U. or for transfer to or from the Instruction Push-Down Store (lPDS). The Subject Address Register and Object Address Register associated with the Subject Register and Object Register respectively are the registers used to store the addresses of the various operands encountered in a system instruction. Addresses may be gated into these registers from the Instruction Register and subsequently into the Object Register and then into the Instruction Push-Down Store upon command of the Instruction Sequencing and Timing Unit as will likewise be set forth fully subsequently. The C.P.U. Accumulator stores the result of any arithmetic operation and provides the address in memory or the accumulator of the result of a just completed computation to the Instruction Sequencing and Timing Unit. The Operator Register is u ed for storage of the actual verb or operator in its eight bit binary form and is transferred into said register either from the Instruction Register upon command or from a particular location of a word which has been stored in the Instruction PuslrDown Store after said data is read out of the IPDS for execution of the stored instruction. The only data which will normally be stored in the Operator Register are the actual mathematical operators and the special operator characters such as the parentheses and until functions. The Operator Decode block performs the function of analyzing a particular operator to determine whether it is an addition. a subtraction, a multiplication. a division, :1 compare, a transfer. a left parenthesis or a right parenthesis during an actual evaluation sequence as will be described subsequently. The necessity for these determinations will be apparent from the subsequent description of the logical schematic diagram of FIGURE 3.

The Instruction Sequencing and Timing Unit is the heart of the present system and utilizes the outputs of the Instruction Decoder and the Operator Decoder to determine in what manner an operation is to be performed by a machine. The unit comprises physically a plurality of single shots or multivibrators which act as clock stages and which are quite conventional in the computer arts in that when a particular single shot or clock stage is turned on, an output pulse of a finite duration will be produced, and when said single shot turns off, an output or turn off pulse will be produced. These pulses may be used in a manner well understood in the art for achieving the various control functions necessary for timing such a complicated analyzing and sequencing procedure. Basically, a string of such single shots comprises a Synchronous Control Unit in that the single shots are normally tied together end to end so that one function must be completed and another one not started until a first function is completed, and an appropriate output pulse obtained which starts a subsequent cycle. Branching is obtained in the Timing Unit for various control functions by provision of conventional AND and OR gates, flip-flops, inverters, and the like, the specific opcration of each of which is notoriously old. It is this unit which generates the various gating signals in cooperation with the outputs of the Instruction and Operate or Decode Units which determine when and if sentences of an input instruction are to be performed at a given time or must be deferred until some later time when they can be properly performed without rendering an incorrect result in the Arithmetic Unit. The block marked Parenthesis Control Register actually comprises six flip-flops and is utilized to, in effect, remember the condition of the various portions of the control circuitry in the Instruction Sequence and Timing Unit at a specified time during an examination of an input instruction. The data contained in this register is stored upon command from the Instruction Sequencing Timing Unit in the fifth character position of the Object Register when it is necessary to defer a certain operation and store same while other operations are being performed. It is the storage of this information which allows the system to properly return to the desired spot in the instruction sequences. As will be explained more fully subsequently this latter step is utilized with the parentheses evaluation sequence.

The block indicated as the Instruction PushDown Store (IPDS) comprises a multi-position storage or memory having associated therewith addressing means which will place a first bit of information to be stored at a first storage location and will upon further input instruction, sequentially store the subsequent segments of information in the memory; but, Whenever a read instruction is received, the memory will read the information out in the reverse order of that which it was put in. This type of push-down store is quite well known in the art and, basically, in the present system could comprise a portion of Main Memory having an auxiliary incrementing and decrementing counter. Each time a new piece of information is to be stored in memory, the address for the storage location of the new word is obtained by incrementing the counter one position, storing the word and repeating this process every time a new piece of information is stored in the memory and conversely, when it is desired to remove information from the memory, the addressing counter is dccremented. It may thus be seen that segments or pieces of information may be placed in the push-down store at an early stage of an instruction sequencing operation and subsequent information put in and removed while not disturbing the originally or first stored information. The form of data stored in the push-down store as stated previously is an eight character, eight bit per character machine word which has been found more than sufiicient to store all of the information necessary to perform the instruction sequencing desired in the present system.

It should be noted that whenever an operand is stored, there will also be stored therewith an operator or special character. Whenever a is stored in the Instruction Push-Down Store, there will also be stored therewith an indication of the character position relative to position in the actual system instruction at which the was encountered. The current condition of the Parcnthesis Control Register is also stored in a given machine word with the t indicator. The purpose of the various addresses and indications stored in the IPDS with the various special symbols will be apparent from the following discussion. It being briefly stated that the various numhers, addresses and condition indicators stored are to place the control circuitry in its status quo at the time that the was first detected in proceeding through the instruction sequence.

As stated previously, although the basic functions of the present system may be broken down into the sequential supplying of an operator and one or more operands to the Central Process Unit or C.P.U. at any given time for execution, the proper sequencing of the system, in accordance with complicated machine instructions, involves somewhat detailed logical circuitry which must necessarily branch at a number of points to perform any one of a number of possible functions. It is believed that the following discussion of FIG. 2, together with Tables 1 through 15 provide the best way of clearly illustrating the functions of the specific embodiment shown in FIG- URES Zia-3b which will be hereinafter referred to simply as FIGURE 3. Similarly, FIGURE 2 actually comprises FIGURES 2a2c but will be referred to hereinafter simply as FIGURE 2.

FIGURE 2 comprises a detailed flow chart or diagram of the present system and by following through same with any given example, the sequence of operations of the system is quite apparent. Two examples have been chosen and will be described with reference to FIGURE 2 and the above-mentioned tables which describe the operations of the system for what is believed to be almost any possible combination of mathematical functions which could be encountered. The first example is of a conditional statement or operation which requires recursive or repetitive execution until a particular condition is met. The other example is included to illustrate the manner in which various ones of the control latches are set in accordance with different mathematical operators occurring at various positions in a sequence with respect to parenthetical terms or expressions. It is believed that the following examples discussed in conjunction with FIGURE 2 and Tables 1 through 15 will clearly explain the operations of the present system.

The specific description of the operation of the logical functional schematic diagram of FIGURE 3 is included only for the iterative example and will suffice to clearly describe the operation of the logical control blocks of the system.

Before proceeding with the description of FIGURE 2 together with Tables 1 through 15, following general description of the functional schematic diagram of FIGURE 3 will first be presented to describe the more important portions of this detailed embodiment of the system and further, the elements of Tables 1 through 15 will be keyed into FIGURE 3 so that what the storage locations of the various members of the table are, where they are located and just how they fit into the over-all system will be readily apparent.

Referring now specifically to FIGURE 3, it will be noted that in the upper portion of the figure, there are four registers, the Instruction Push-Down Store and the Main Memory, which is shown schematically. The registers are the Instruction Register 10, Subject Register 18, Object Register 24, the Parcnthesis Control Register 30, IPDS 32 and Main Memory 34. Each of these registers it will be noted. has its own Control Ring to control gating of data into and out of said registers at a desired character location. The Instruction Register Ring 12 normally will merely advance to examine the next character of an instruction stored in the Instruction Register 10. However, it will, of course, be understood that any desired character location can be examined under control of this ring by the application of an appropriate input signal to the ring as will be understood by a person skilled in the art. The IR Control Ring is shown having two gate circuits 11 and 13; gate 11 coming out of the bottom of the ring is energized to read the character out of the IR on which the IR Control Ring is currently sitting while gate 13 on the cable coming out of the end of the IR Control Ring gates out the character position, i.e., 1 through 8, on which the Control Ring is currently sitting. Gate 13 also is effective to reset the IR Control Ring to a desired position upon command of the system.

The Subject Register Ring and Object Register Ring 26 function in substantially the same manner as the Instruction Register Ring 12 in that they can be indexed to the next sequential position or any chosen position of its associated registers may be selected by the ring. Also, any of four, 2 character locations may be chosen by these rings. The Parenthesis Control Register 30 is not the same sort of register as the others, but merely composes a series of six flip-flops located at various places in the Sequencing Unit as discussed previously; however, the condition of these six flip-flops is sampled upon command and stored in the fifth position of the Object Register at certain sequential times of the system operation as will be more apparent from the subsequent specific description. Operator Register 14 (OR) is, as stated previously, for the purpose of storing an operator indicator or symbol, the contents of said register being examinable by the Operator Register Decoder 38 which functions to determine the specific operation called for by the data stored in said register. Instruction Register Word Address 16, Subject Address Register 22 and Object Address Register 28 are substantially the same in that they are capable of storing the fourteen bit Main Memory Word Addresses for an Instruction Word Subject and Object, respectively.

This above section of the system essentially comprises the storage portion in that the various registers together with the IPDS and Main Memory are capable of storing all of the information necessary to perform the proper sequencing of a given arithmetic instruction. The registers provide for both semipermanent and temporary, or one or two cycle, storage while particular operations are being carried out as others are deferred. It will be noted that the Object Register 24 is the one in which most of the writing of information is done in that the specific words to be stored in the IPDS are actually constructed in the Object Register and transferred into the IPDS upon command of the system. The lower portion of the figure comprises essentially all of the timing and control circuitry necessary. As stated previously, the Timing Section is essentially composed of well known functional logical elements including single shots for effecting the proper timing and sequencing of the operation, various [lip-flops for setting detected conditions from the Main Decoder 36 and various ANDs, ORs and inverter or NOT circuits for obtaining the desired logical functions.

The detailed description of this figure will specifically describe the operation of the individual components; however, it should be noted that the output of the Main Decoder 36 together with the sequential scanning of the instruction actually sets up the sequencing of a given instruction. Once it has been determined that a particular operation is to be performed based on the output of the Decoder 36 together with the various timing and analyzing circuits which will be described specifically, the Operator Register Decordcr 38 actually determines what specific mathematical operation is to be carried out and is operative to provide the proper verb or instruction to the C.P.U. again as will be apparent from the specific description.

It will also be noted that the functions of the various general portions of the control circuitry have been in clicated with appropriate notations above AND circuits, A52, A10, A18, A2, A72 and A106. This lettering indicates generally the function which is analyzed in the circuitry just below this section. It will be noted generally that the outputs of the Decoder 36 are AN Bed with a general evaluate signal on line L4. As stated previously, the timing control circuitry generally comprises a large number of single shot multivibrators operating as various clock stages. When the time duration for a sequence step is relatively short, the standard single shot is used. If on the alternative the duration for performing an indicated sequence step is somewhat longer, the flip-flops or latches designated by the prefix L preceding the numerical designation are used. For example, the turn off pulse of a previous clock stage is used to set the latch to its 1 state which will, of course, result in the performance of a desired function and when the function is performed, an accompanying have performed" or done" signal will reset the latch to its previous state and thus continue the particular timing sequence. The general exception to these latches are the latches indicated as "conditional do latch, may do latch, and do latch."

Stated briefly, the functions of these three latches plus the three IDR or Instruction Decode Register latches, all of which comprise in the Parenthesis Control Register, will now follow.

The conditional do latch is a latch set when 0H) or a(-) and its corresponding subject are stored in the Instruction Push-Down Store. When so set, this latch indicates that if at some later time another add or subtract is reached, that this preceding add or subtract in the Instruction Push-Down Store can be performed. This latch, therefore, is used to keep the number of entries in the Instruction Push-Down Store to a minimum. The do" and may do latches are used for a different purpose than the conditional do latch. In the course of perform ing a verb, it is required that the object of this verb be looked up; that is to say, the absolute address of this object must be found. However, what may follow the verb is not only an absolute address but a left parenthesis. In this case, it is necessary to go ahead and evaluate the parenthetical statement, but after finishing this evaluation, it is necessary to return to where the evaluation of that original verb was temporarily discontinued. Upon the detection of a left parenthesis, the do latch is set if a multiplication or division or compare" is being performed and the may do" is set if an add or subtract is being performed. When the end of the parenthetical statement is reached, the condition of the two latches tells which verb to return to. So, if, when the end of the parenthetical statement is reached, the do latch is set, control should return to the multiplication, division, compare" procedure. If the may do latch" is set, control should be returned to the add or subtract procedure.

The three latches in the IDR namely the 0, 1 and 2 latch are set to indicate three different types of left parenthesis and are utilized primarily for evaluating the until or conditional type of operations. Assuming that these three latches may store either a 1" or a *0 it should first be stated that only one of the three can store a l at any one time. Therefore, there are three possible conditions of operations in which a 1" will be stored in the IDR when a left parenthesis is encountered in an instruction sequence.

When the 0 latch is set or the binary number l," 0," 0 occurs in the IDR, there is an indication that :1 normal left parenthesis has been found, that is, where the parenthetical expression is merely a subject or an object of an instruction sentence. When a 0, l," (T is set or the number 1 latch of the IDR set to a 1; there is an indication that the particular left parenthesis immediately follows an "until instruction which has a parenthetical statement as its subject and the *conditional" statement is to return to the previous left parenthesis marker for re-evaluation if such is required. And finally, when the number 2 latch of the IDR is set to a *l" or the quantity 0, 0, l is stored in the IDR, there is an indication that the left parenthesis immediately follows an until function which does not have a parenthetical statement as its subject and that the conditional statement is to return all the way back to the beginning record mark (a or starting point of that particular instruction.

The above elements of FIGURE 3 have been explained in detail because as stated previously, these are believed to be the more important functional components of the system. The remaining elements operate in a very normal fashion as indicated in both the logical schematic diagram of FIGURE 3 and in the flow chart diagram of FIGURE 2. The function of the remaining elements is believed to be quite obvious from their arrangement in the circuit diagram, it being reiterated that in a number of situations, the fiip'fiops were used as opposed to the clock single shots where a sequence was to take a considerably longer period of time there would normally be provided for by the standard output pulse of a single shot.

In FIGURE 3 that rather than use multi-digit numbers, a great many of the logical functional components have been provided with a prefix letter designation. For example. all of the AND circuits are indicated by the letter A preceding the number, the OR circuits by a O preceding the number, the single shots by an s.s. preceding the number, the lines or connecting elements by a C pre ceding the number and the latches by an L. Due to the complexity of the drawing and the large number of elements, it was believed that this was the clearest way of presenting the invention without resorting to many three and even four digit numbers, Similarly, the outputs of many of the single shots are indicated by the functional result to be performed by said output pulse. It is believed that the function and manner in which these results are obtained is extremely well known in the computer arts and obvious in the figure. Further, to show the details of circuit lines going into a particular gate circuit block for every one of the single shots would render the drawing extremely complicated and difficult to comprehend. For example, such an indication as IPDS Object Register obviously means that the contents of the first readable position of the IPDS are to be gated into the Object Register over the appropriate lines shown through both the gate circuit of the IPDS and the gate circuit of the Object Register. The manner in which data is gated into and out of Storage Registers or Main Memory is well known in the art and to show a plurality of AND circuits and input lines connecting the outputs of the various single shots with the particular gate circuits would serve no purpose. Similarly, the method of gating a particular character of data into a particular character position of a particular register through the various control rings 12, and 26 is similarly well known. Hence, for the various regisfers and rings shown in the upper portion of FIGURE 3, a gate circuit is shown above the registers wherever the entire register word is to be read in or out at a time and gate circuits are shown below the particular Control Rings for the individual registers whereby data may be stored in or read out of the registers one or two characters at a time as will be seen in the subsequent description.

The above general description of FIGURE 3 should greatly enhance the following description of the How chart of FIGURE 2, together with the particular Tables 1 through 15 referred to in the description thereof.

It will be noted in these tables that stored information is shown at various steps during an evaluation procedure of a particular instruction which is to be automatically sequenced by the present system. The first item in the table indicates the contents of the registers. The first is the Instruction Register 10. The entire instruction is shown on this line, but the current contents of the register are indicated by a box surrounding these contents. The vertical arrow below this line of an instruction sequence indicates the position of the IR Control Ring 12. In other words, it state which character is being evaluated by the system or stated conversely. which character is being fed to the Decoder 36. The IR Word Address 16 merely stores the address of the particular instruction sequence word and makes it available to the system in the case of a long parenthetical expression or an iterative or repetitive process which requires re-accessing of the particular instruction at an early point thereof. The Subject Address Register, as is obvious, stores the two character address for any piece of data in Main Memory and the Object Address register performs the same function as the Subject Address Register. The Object Register contents illustrate the eight character word capable of storage in the Object Register at various stages of the sequence and as will be obvious from the various tables, this register is written into by the system for subsequent storage in the IPDS upon the occurrence of certain instructions in the Instruction Register. The IPDS shows a plurality of eight character words indicating generally how they would be stored in the IPDS. For example, the first eight character word to the left represents the first word storage position in the IPDS and proceeding to the right, indicates subsequent word storage positions. As a first item or word is stored in the IPDS, it would be stored in the first, second, third, fourth, fifth, etc.. positions in the IPDS and as words are read out, they would be read out in reverse order from the fifth. fourth, third, second and etc., positions of the IPDS. The contents of the IPDS will be illustrated in the discussion of the subsequent example and it will be clearly apparent just how the system utilizes the [PBS to store different instructions appearing in the instruction sequence as the system evaluates the same. The bottom section of the tables indicates the contents of the various latches of the Parenthesis Control Register which have been previously described. The table indicates which latches are set and how the information is used in the system when certain operators are encountered in an instruction set. Having thus generally described the more important functional blocks of the logical schematic diagram of FIGURE 3, together with the meaning of the specific contents of the tables keyed into FIGURE 3, it is believed that the following description of FIGURE 2 together with these tables will be better understood by the reader. Also, with reference to the following description of FIGURE 2 and following tables, it should be noted that the flow diagram contains a number of blocks indicating If conditions. It should be understood that these conditions are obviously determined by the IR Decoder and that a particular sequence of the flow diagram is entered by either ANDing with the output of the IR Dscoder or by setting appropriate flip-flops as is de scribed more fully in the specific description of FIG- URE 3.

The first example will he the instruction Starting out with all the registers in the condition as illus trated in FIGURE 1, in the Instruction Register (IR) 10 are the first 8 characters of the sample instruction. The IR Control Ring 12 is sitting at the first character, which is the record marker eand in the IR Word Address Register 16 is stored the address of the word in the Instruction Register, namely jj. The Subject Address Register 22, Object Address Register 28. Object Register 24, and IPDS 32 are currently blank and the six latches comprising the Parenthesis Control Register are in the reset or 0" state. Since the IR Control Ring 12 is sitting at the record marker on the block diagram, the IR Decoder 36 is putting out a signal on the record marker line. This is sent to block 1 which is an AND circuit. The output from this AND circuit is sent to block 2. The first thing that is done is that the Instruction Push- Down Store is cleared, which would be its normal condition. This is to get rid of any old information that is left over from a previous instruction. In block 3, the IR character, which in this case is a record marker, is placed in the Object Register at position 3. In block 4, the IR Word Address is placed in the Object Register at positions 7 and 8. Block 5 causes 0 to be placed in the Object Register at No. S. This is the character portion of the 7 At this time there exists the situation illustrated in FIGURE 2. Control is then returned to block 5. Here the contents of the Object Register are placed in IPDS. The first machine word of IPDS, therefore, has information which was formerly in the Object Register. Block 6 indicates that the IR Control Ring is to be advanced one position. It is now sitting on the first A. Block 7, next, indicates that the evaluate subject subroutine is to be performed. This subroutine is diagrammed just to the left beyond the perform IPDS subroutine.

The "evaluate subject subroutine comprising entering the evaluate subject subroutine sequence at Block 10 and 11. If a left parenthesis were in the IR at this present time, which is not true, then a signal would come out of Block 11. If a general character is in the IR, which is true, the first A is considered a general character. Proceeding then to block 12, this places this first "A into the first character position of the Object Address Register called Object Block advances the IR Control Ring to the second A. Block 14 again places the IR character, this time the second A, into the second character position of the Object Address Register called Object and the IR Control Ring is advanced one more position. What has just been done is to transfer the address AA into the Object Address Register. If .an evaluate subject subroutine is being performed, the sequence goes to block 16. This then goes to block 13, which causes the contents of the Object Address Register to be placed in the Subject Address Register. This result is illustrated in FIGURE 3.

After having performed block 18 a done" signal is sent back to the calling sequence, which is block 8. Having evaluated the subject, the sequence returns to blocks 19 and 20, which check the Right Parenthesis Latch L20. 1f the right parenthesis latch is set to a '1, blocks 21 and 22 place a O in the Operator Register, (OR) and reset the right parenthesis latch. Control is then returned to the beginning. If the right parenthesis latch had been reset, then control would have directly passed to the beginning through block 20. At this time, as had been illustrated in FIGURE 3, the IR Control Ring is sitting at the first arrow. Therefore, a signal is on the arrow line out of the IR Decoder. This is sent to block 23 which is an AND circuit. Block 24 causes any unperformed operations in the IPDS to be gated out and performed until either a left parenthesis "t'" or (i) marker is reached. In the present case at the current time, there are no undone operations in IPDS. Therefore, the control proceeds to block 25. This causes the right parenthesis latch to be reset. Block 26 transfers the IR character into the OR. Thus, the arrow is placed in the Operator Register. Next, block 27 causes the evaluate object" subroutine to be performed. This is similar to the evaluate subject subroutine which has been described above. In the evaluate object subroutine the control proceeds through blocks 10, 12, 13, 14, and 15, as previously described. This leaves the IR Control Ring at the left parenthesis and places the Object Address which is ii into the Object Address Register 28. Since an evaluate object is being performed, control proceeds through block 17 to return to the calling block which was 28. The registers are now in the condition illustrated by FIGURE 4. Block 30 is an indication that the Process Unit should perform the operation indicated in the OR or in the data indicated in the Subject Address in Object Address Registers. Then the AA should be transfered to ii. When this had been done, control proceeds to blocks 19 and 20, which as previously described, reset the right parenthesis latch if it had been set. Returning to the beginning, the IR Control Ring is on the first left parenthesis. There is therefore a signal out of the IR Decoder on the left parenthesis line which is sent to AND Block Circuit 31. From here the sequence goes to block 32. This sets the three IDR latches to the state 1, "-0," "0. This particular combination, l," O, "0, indicates that there is a normal left parenthesis. This distinguishes it from the left parenthesis which follows an until. Here a special circumstance must be indicated. This will be described later.

Block 33 causes the IR character which is the left parenthesis to be placed in the Object Register at position 3. Block 74 then causes the Parenthesis Control Register 30 which consists of the do, may do, "conditional do" and three IDR" latches, to be placed in the Object Register at position 4. Block 35 causes the location of the left parenthesis, which is the IR character position, to be placed in the Object Register at position 5. Since this left parenthesis is the seventh character of the machine word, a 7 will be placed in this character position. Block 36 causes the IR Word Address which is jj" to be placed in the Object Register at positions 7 and 8. The contents of the Object Register are then placed in the IPDS, as indicated in block 5. Block 6 then causes the IR Ring control to be advanced, block 7 causes the "evaluate subject subroutine to be performed. After this has been accomplished, at block 8, the registers are in the condition illustrated by FIGURE 5. After the location of this left parenthesis is in IPDS, the Subject Address Register contains "1'2 which will be the subject of this next addition to be performed, and the IR Word Address contains "kit" which is the address of the current machine word in the Instruction Register. From block 8 we proceed to the beginning through blocks 19 and 29 as usual. Since the IR Control Ring is at the a signal from the IR Decoder is sent from the line to block 37, which is an AND circuit. From here, we proceed to blocks 38 and 39. These question the condition of the conditional do latch." These will be explained in a later example. Now the conditional do latch is in the 0 or reset state so we proceed through block 38 to block 40. Block 40 resets the right parenthesis latch, which in this case had already been done. Block 42 causes the 1R character, which is a to be placed in the Operator Register. Block 43 causes an evaluate object" subroutine to be performed. This ends up with the address BB in the Object Address Register and the IR Ring control on the multiply following the BB. From block 44 control proceeds to blocks 47 and 48. If the IR Ring control is sitting on a character which is not a multiply or divide, the sequence would proceed normally to perform the operation indicated in the Operator Register. However, a multiply is in the IR and therefore the sequence proceeds through block 47 to block 48. This causes the character in the OR, which is a -i-, to be placed in the Object Register at position 3. Block 4 9 then causes the contents of the Subject Address Register, which is ii, to be placed in the Object Register at positions 5 and 6. Block 50 causes the contents of the Object Register to be placed in Instruction Push-Down Store. Block 51 then transfers the address in the Object Address Register into the Subject Address Register, and block 52 causes the "conditional do latch to be set. The condition of the registers is shown in Table 6. Control then returns to the beginning. The IR Control Ring is at the multiply and therefore a signal is on the multiply output of the OR Decoder. This signal is sent to block 54 which is an AND circuit and the sequence goes to block 25. This first makes sure that the right parenthesis latch is reset. Block 26 moves the multiply into the Operator Register. Then block 27 causes the object to be evaluated, which results in CC in the Object Address Register. Then the IR Ring control is sitting on the arrow When this has been done through block 28, the sequence proceeds to block 30 which causes the multiply to be performed. The result of this multiplication is placed in some available register or storage as determined by the Control Process Unit, (C.P.U.). The C.P.U. indicates in the Subject Address Register where the result has been placed. Assume that the Process Unit has placed the result in some location called BC. Therefore, as a 19 result of block 30, the registers are in the condition indicated in FIGURE 7. From the block 30, control returns through blocks 19 and 20 to the beginning.

Now there is a signal out of the IR Decoder on the transfer function line. This is sent to block 23. First the conditional do latch is reset through block 54. Then block 24 causes the IPDS to be performed until a left parenthesis or is reached. The perform IPDS subroutine will now be explained to show how it is accomplished.

Block 55 causes the current Instruction Push-Down Store word to be placed in the Object Register. This is the word which currently contains the and the address ii. Thus, in position 3 of the Object Register is a and in positions 5 and 6 of the Object Register is ii. Block 56 then causes this in position 3 of the Object Register to be placed in the Operator Register. Proceeding then to blocks 57, 58, and 59, if a left parenthesis were in the OR, control would proceed through 57. If a sentence marker were in the OR, control would proceed through block 58. However, if neither a left parenthesis nor a sentence marker is contained in the OR, control proceeds through block 59. Since a is in the OR, control does, in fact, proceed through 59. Block 60 forces the address which is in the Subject Address Register to be placed in the Object Address Register. This was the address BC. Block 62 causes the address in the Object Register at positions 5 and 6 to be placed in the Subject Address Register. This is "ii." At this time, the contents of the registers are shown in Table 8. Block 64 then causes the operation indicated in the OR, which is a to be performed by the CPU. on the data whose addresses are in the Subject and Object Address Registers. When this is done, the result, as usual, is placed in some location and the address of this location placed in the Subject Address Register. Assume this address to be LICjI Control then returns to the calling sequence on the performed line. Since a left parenthesis or i was not found, this subroutine is repeated. Control then goes through block 55 reading out the next word from the IPDS into the Object Register. This is the word con taining the left parenthesis. Block 56 causes the left parenthesis to be placed in the OR. Since then, a left parenthesis is in OR, control proceeds through block 57 57 to block 6 5 which returns this word in the Object Register to the IPDS. Now control proceeds to block 25. Since a left parenthesis has been recorded, block 25 again causes the right parenthesis latch to be reset if it had not been. Block 26 causes the IR character to be placed in OR. This is now a transfer function Block 27 evaluates the object. This places in the Object Address Register "ii and leaves the IR Ring control on the right parenthesis. Through block 28 control goes through to block 30 which causes the operation indicated to be performed. Thus, the quantity, ii+BB CC, indicated by the address IC" in the Subject Address Register is placed at the location indicated by the Object Address Register which is "ii. The parenthetical statement is now being performed and control returns to the beginning. The right parenthesis is currently the character pointed at by the IR Control Ring, and therefore a signal is on the right parenthesis line out of the IR Decoder. This line is proceeded to block 67. Proceeding from block 67 to block 68 causes the IPDS to be performed until a left parenthesis or i is reached. Since a left parenthesis is immediately found in the IPDS, in effect, nothing happens except that the Object Register now contains the last word of IPDS. Block 69 causes the right parenthesis to be placed in the OR.

Block 70 advances the IR Control Ring to the until, and block 71 causes the contents of position 4 of the Object Register to set the Parenthesis Control Register. Thus, the do, may do, and conditional do latches 20 are reset. The 0 IDR latch is set and the 1 and 2 IDR latches are reset. The current state of the registers is shown in FIGURE 9.

Since the 0 latch of the IDR is set, control proceeds through block 72 to blocks 75 and 76. Since the do and may do latches are off, control immediately proceeds to the beginning, bypassing and resetting right parenthesis latch. The IR Control Ring is at the until character and a signal therefore is on the until output of the IR Decoder. This signal is sent to block 105, and then to blocks 106 and 110. In this case, a right parenthesis is in the OR, so control would proceed through block 110. When a right parenthesis is in the OR, this would indicate that, depending upon the result of the conditional statement following the until instruction, we would return to the corresponding left parenthesis. If there had not been a right parenthesis in the OR, that would mean that control would return to the preceding record marker (i) depending again on the result of the conditional statement following the until. Following through for this case from block 110, control would advance the IR block 111 to the following left parenthesis. This would put this left parenthesis in the Object Register at position 3, and would set latch 2 of the IDR to indicate that a conditional statement is being evaluated which should return to the record marker, and then the Parenthesis Control Register which contains this information is placed in the Object Register at position 4. Returning to block 35, this puts the position of the left parenthesis into the Object Register at position 5 and the address of the instruction machine word in which the left parenthesis is containcd in positions 7 and 8 of the Object Register, and finally the contents of this Object Register are placed in the IPDS. However, in this case, control would proceed through block 106, block 107 would cause the 1 latch of the IDR to be set. Block 108 would advance the IR to the left parenthesis and block 109 would then cause the Parenthesis Control Register which contains the indication that conditional statement which is now to be evaluated is part of an until, to be placed in the Object Register at position 4. The contents of the Ohject Register are then placed in IPDS as indicated in Block 5.

Block 6 indicates that the IR Control Ring should be advanced to the first 1' following the left parenthesis. Block 7 causes the evaluate subject subroutine to be performed which places it in the Subject Address Register and leaves the IR Control Ring on the compare operation The system control is now in the condition shown in Table 10. Control is returned to the beginning via Block 8. Since now the IR Control Ring is at the a signal is on the line on the IR Decoder. This is the same line as the multiply-divide, and the procedure followed is the same and need not be described. After this operation has been performed, in block 30, a satisfy or not satisfy" signal is returned to the system from the Process Unit. The IR Control Ring is now at the last right parenthesis, and control returns to the beginning at which time the right parenthesis line from the IR Decoder has a signal. This signal is sent to block 67. Block 68 causes the IPDS sequence to be performed until a left parenthesis is reached, which results in the last word of IPDS containing the left parenthesis being placed in the Object Register. The IR character which is the right parenthesis is placed in the OR, and the IR advanced to the final sentence marker. The contents of the Object Register at position 4 are placed in the Parenthesis Control Register which resets the do, may do" and conditional do latches, resets the 0 and 2 IDR latches and sets the l IDR latch. Since the 1 IDR latch is now set, control proceeds through block 73 to block 86 and 87. If the satisfy latch has been set to a 1, control proceeds on, and therefore gives from block 86 to the beginning and proceeds onward. If the satisfy latch was not set, i.e., 0 namely if the conditional state- 

1. AN AUTOMATIC INSTRUCTION SEQUENCING SYSTEM FOR USE WITH A DIGITAL COMPUTER INCLUDING A MAIN MEMORY AND ASSOCAITED CONTROLS AND A CENTRAL ARITHMETIC PROCESSING UNIT, SAID SYSTEM COMPRISING MEANS FOR INTERPRETING AND ORDERING AN INSTRUCTION SEQUENCE WHICH COMPRISES A FIRST REGISTER FOR STORING THE ADDRESS OF A FIRST OPERAND, A SECOND REGISTER FOR STORING THE ADDRESS OF A SECOND OPERAND A THIRD REGISTER FOR STORING A CURRENT OPERATOR ASSOCIATED WITH SAID TWO OPERANDS, MEANS FOR COMPARING THE NEXT OPERATOR WITH THE CURRENT OPERATOR AND FOR DETERMINING THE RELATIVE PRIORITY OF SAID OPERATIONS, MEANS OPERATIVE IN RESPONSIVE TO THE PRIORITY DETERMINATION TO SELECTIVELY PERFORM THE OPERATION SPECIFIED BY SAID CURRENT OPERATOR; MOVE THE CONTENTS OF BOTH THE FIRST OPERAND REGISTR AND THE OPERATOR REGISTER RESPECTIVELY INTO A SIGNAL PUSH-DOWN STORE AND MOVE THE CONTENTS OF THE SECOND OPERAND REGISTER INTO THE FIRST OPERAND REGISTER AND PLACE SAID NEXT OPERATOR IN THE SAID OPERATOR REGISTER, 